/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedbean;

import fr.afcepf.atod16.groupe1.projet1.dto.client.DtoCompteClient;
import fr.afcepf.atod16.groupe1.projet1.dto.commande.DtoCommande;
import fr.afcepf.atod16.groupe1.projet1.dto.commande.DtoLigneCommande;
import fr.afcepf.atod16.groupe1.projet1.dto.util.DtoAdresse;
import fr.afcepf.atod16.groupe1.projet1.dto.util.DtoProduitPanier;
import fr.afcepf.atod16.groupe1.projet1.service.ServiceCommandeLocal;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name = "mbPasserCommande")
@SessionScoped
public class MbPasserCommande {

    @EJB
    private ServiceCommandeLocal serviceCommande;
    private int etapeCommande = 1;
    private int etapeVue = 1;
    private int indexLivraison = 1;
    DtoAdresse adresse;
    DtoCommande commande;
    

    public MbPasserCommande() {
        commande = new DtoCommande();
        adresse = new DtoAdresse();
        etapeCommande = 1;
        etapeVue = 1;
        indexLivraison = 1;
    }

    public void resetCommande() {
        commande = new DtoCommande();
        adresse = new DtoAdresse();
        serviceCommande.resetEtapeCommande();
        etapeCommande = 1;
        etapeVue = 1;
        indexLivraison = 0;
    }

    public void validerFormulaireAdresse(DtoCompteClient compteLivraison, DtoCompteClient compteFacturation) {
        
        //Enregistrement du DtoCompteClien dans la commande:
        commande.setCompteClient(compteFacturation);
        serviceCommande.setCompteClient(compteFacturation);
        
        //Ajout de l'adresse de livraison dans l'EJB stateful
        serviceCommande.setAdresseLivraison(adresse);

        //Ajout de l'adresse de facturation dan l'EJB stateful
        DtoAdresse adresseFacturation = new DtoAdresse();
        adresseFacturation.setCivilite(compteFacturation.getCivilite());
        adresseFacturation.setNom(compteFacturation.getNom());
        adresseFacturation.setPrenom(compteFacturation.getPrenom());
        adresseFacturation.setAdresse(compteFacturation.getAdresse());
        adresseFacturation.setCodePostal(compteFacturation.getCodePostal());
        adresseFacturation.setVille(compteFacturation.getVille());
        adresseFacturation.setTelFixe(compteFacturation.getTelFixe());
        adresseFacturation.setTelMobile(compteFacturation.getTelMobile());
        serviceCommande.setAdresseFacturation(adresseFacturation);
        
        DtoAdresse adresseLivraison = new DtoAdresse();
        adresseLivraison.setCivilite(compteLivraison.getCivilite());
        adresseLivraison.setNom(compteLivraison.getNom());
        adresseLivraison.setPrenom(compteLivraison.getPrenom());
        adresseLivraison.setAdresse(compteLivraison.getAdresse());
        adresseLivraison.setCodePostal(compteLivraison.getCodePostal());
        adresseLivraison.setVille(compteLivraison.getVille());
        adresseLivraison.setTelFixe(compteLivraison.getTelFixe());
        adresseLivraison.setTelMobile(compteLivraison.getTelMobile());
        serviceCommande.setAdresseLivraison(adresseLivraison);
        
        //Ajout des adresse de livraison & facturation dans le DtoCommande dans notre ManagedBean sessionScoped
        commande.setCiviliteFacturation(compteFacturation.getCivilite());
        commande.setNomFacturation(compteFacturation.getNom());
        commande.setPrenomFacturation(compteFacturation.getPrenom());
        commande.setAdresseFacturation(compteFacturation.getAdresse());
        commande.setCodePostalFacturation(compteFacturation.getCodePostal());
        commande.setVilleFacturation(compteFacturation.getVille());
        commande.setTelFixeFacturation(compteFacturation.getTelFixe());
        commande.setTelMobileFacturation(compteFacturation.getTelMobile());

        commande.setCiviliteLivraison(compteLivraison.getCivilite());
        commande.setNomLivraison(compteLivraison.getNom());
        commande.setPrenomLivraison(compteLivraison.getPrenom());
        commande.setAdresseLivraison(compteLivraison.getAdresse());
        commande.setCodePostalLivraison(compteLivraison.getCodePostal());
        commande.setVilleLivraison(compteLivraison.getVille());
        commande.setTelFixeLivraison(compteLivraison.getTelFixe());
        commande.setTelMobileLivraison(compteLivraison.getTelMobile());


        //Changement d'etape de passerCommande.
        etapeVue = 2;
        etapeCommande = 2;
    }

    public void validerFormulaireAdresse(DtoCompteClient compteFacturation) {

        //Enregistrement du DtoCompteClien dans la commande:
        commande.setCompteClient(compteFacturation);
        serviceCommande.setCompteClient(compteFacturation);

        //Changement du DtoCompteClient en DtoAdresse:
        DtoAdresse adresseLivraisonEtFacturation = new DtoAdresse();
        adresseLivraisonEtFacturation.setCivilite(compteFacturation.getCivilite());
        adresseLivraisonEtFacturation.setNom(compteFacturation.getNom());
        adresseLivraisonEtFacturation.setPrenom(compteFacturation.getPrenom());
        adresseLivraisonEtFacturation.setAdresse(compteFacturation.getAdresse());
        adresseLivraisonEtFacturation.setCodePostal(compteFacturation.getCodePostal());
        adresseLivraisonEtFacturation.setVille(compteFacturation.getVille());
        adresseLivraisonEtFacturation.setTelFixe(compteFacturation.getTelFixe());
        adresseLivraisonEtFacturation.setTelMobile(compteFacturation.getTelMobile());

        //Ajout des adresse de livraison et facturation dans l'EJB stateful:
        serviceCommande.setAdresseFacturation(adresseLivraisonEtFacturation);
        serviceCommande.setAdresseLivraison(adresseLivraisonEtFacturation);

        commande.setCiviliteLivraison(compteFacturation.getCivilite());
        commande.setNomLivraison(compteFacturation.getNom());
        commande.setPrenomLivraison(compteFacturation.getPrenom());
        commande.setAdresseLivraison(compteFacturation.getAdresse());
        commande.setCodePostalLivraison(compteFacturation.getCodePostal());
        commande.setVilleLivraison(compteFacturation.getVille());
        commande.setTelFixeLivraison(compteFacturation.getTelFixe());
        commande.setTelMobileLivraison(compteFacturation.getTelMobile());

        commande.setCiviliteFacturation(compteFacturation.getCivilite());
        commande.setNomFacturation(compteFacturation.getNom());
        commande.setPrenomFacturation(compteFacturation.getPrenom());
        commande.setAdresseFacturation(compteFacturation.getAdresse());
        commande.setCodePostalFacturation(compteFacturation.getCodePostal());
        commande.setVilleFacturation(compteFacturation.getVille());
        commande.setTelFixeFacturation(compteFacturation.getTelFixe());
        commande.setTelMobileFacturation(compteFacturation.getTelMobile());

        etapeVue = 2;
        etapeCommande = 2;
    }

    public void validerModeLivraison() {
        String modeLivraison = null;
        Integer fraisLivraison = null;
        switch(indexLivraison){
            case 1: 
                    modeLivraison = "Colissimo";
                    fraisLivraison = 10;
                break;
            case 2:
                    modeLivraison = "Fedex";
                    fraisLivraison = 15;
                break;
            case 3:
                    modeLivraison = "Fedex Express";
                    fraisLivraison = 30;
                break;
        }
        System.out.println("Frais livraison ="+fraisLivraison);
        System.out.println("Mode livraison ="+modeLivraison);
        serviceCommande.setModeLivraison(modeLivraison);
        serviceCommande.setFraisLivraison(fraisLivraison);

        etapeVue = 3;
        etapeCommande = 3;
    }

    public void validerConfirmation(ArrayList<DtoProduitPanier> produitList) {
        
        serviceCommande.setLignesCommande(produitList);
        etapeVue = 4;
        etapeCommande = 4;
    }

    public String validerPaiement() {
        serviceCommande.validerPaiement();
        return "transactionOk.xhtml";
    }

    public int getEtapeCommande() {
        return etapeCommande;
    }

    public void setEtapeCommande(int etapeCommande) {
        this.etapeCommande = etapeCommande;
    }

    public int getEtapeVue() {
        return etapeVue;
    }

    public void setEtapeVue(int etapeVue) {
        this.etapeVue = etapeVue;
    }

    public void changerEtapeVue(int etapeVue) {
        this.etapeVue = etapeVue;
    }

    public DtoCommande getCommande() {
        return commande;
    }

    public void setCommande(DtoCommande commande) {
        this.commande = commande;
    }

    public DtoAdresse getAdresse() {
        return adresse;
    }

    public void setAdresse(DtoAdresse adresse) {
        this.adresse = adresse;
    }

    public int getIndexLivraison() {
        return indexLivraison;
    }

    public void setIndexLivraison(int indexLivraison) {
        this.indexLivraison = indexLivraison;
    }
    
}
